

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<script type="text/javascript" src="helpman_topicinit.js"></script>

<title>Fork/Join [Enterprise Architect User Guide]</title>

<meta name="keywords" content="Enterprise Architect, Sparx Systems, UML, Element,Element Fork,Element Join,Fork/Join,Fork/Join Element,Fork,Fork Element,Fork Pseudo-State,Pseudo-State,Pseudo-State Fork,Pseudo-State Join,Join,Join Element,Join Pseudo-State">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="Content-Style-Type" content="text/css" />

<link type="text/css" href="default.css" rel="stylesheet" />
<style type="text/css">
  A, A:Visited
  {
    color: #00F;
  }

  A:Active, A:Hover
  {
    color: #F00;
  }

  OL
  {
    margin: 5px 0 5px 48px;
  }

  UL
  {
    margin-bottom: 3px;
    margin-top: 0;
  }

  #nsr
  {
    background-color: #D4DFFF;
  }

  #nsr A
  {
    text-decoration: none;
  }

  #mainbody
  {
    padding: 8px;
  }

  .p_BodyText
  {
    padding: 5px 0;
  }
</style>



<style type="text/css" media="screen">
  BODY
  {
    background-color: #FFFFFF;
  }

  #nsr
  {
    padding: 6px 6px 0 6px;
    border-bottom: none;
    vertical-align: top;
    z-index: 2;
    visibility: visible;
    left: 0;
    top: 0;
    position: absolute;
  }

  #mainbody
  {
    left: 0;
    top: 0;
    margin: 0;
    position: absolute;
    padding: 10px;
    overflow: auto;
    height: 100%;
    z-index: 1;
    background-repeat: no-repeat;
    background-position: bottom right;
    background-attachment: fixed;
  }
</style>

<style type="text/css" media="print">
  #nsr
  {
    visibility: none;
  }

  #mainbody
  {
    overflow: visible;
  }
</style>
<script type="text/javascript" language="JavaScript" src="nonscroll.js"></script>

</head>
<body scroll="no">

<div id="page">



        <div id="content">
          <div id="content-inner">
          



  
          <div id="nsr">
            <table border="0" cellspacing="0" cellpadding="4" width="100%">
              <tr valign="top">
                <td align="left">
  


                  <p class="p_Heading1"><span class="f_Heading1">Fork/Join</span></p>



  
                </td>
                <td align="right">
                  <a href="introduction.htm" onmouseover="document.images.main.src='button_main_h.gif'" onmouseout="document.images.main.src='button_main.gif'">
                    <img name="main" src="button_main.gif" border=0 alt="Return to Introduction">
                  </a>&nbsp;
    
                  <a href="flowfinal.htm" onmouseover="document.images.prev.src='button_prev_h.gif'" onmouseout="document.images.prev.src='button_prev.gif'">
                    <img name=prev src="button_prev.gif" border=0 alt="Previous page" />
                  </a>&nbsp;
    
    
    
                  <a href="fork.htm" onmouseover="document.images.next.src='button_next_h.gif'" onmouseout="document.images.next.src='button_next.gif'">
                    <img name=next src="button_next.gif" border=0 alt="Next page" />
                  </a>
    
    
                </td>
              </tr>
            </table>
          </div>
          <div id="mainbody">
  


                <div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 5px 0px 5px 13px;"><table cellspacing="0" cellpadding="0" border="0" style="border: none; border-spacing:0px;">
<tr style="text-align:left;vertical-align:top;">
<td valign="top" width="160" style="width:160px;"><p class="p_TextIndentedL2"><img src="d_forkjoinacross.png" width="85" height="66" border="0" alt="d_ForkJoinAcross"></p>
</td>
<td valign="top" width="154" style="width:154px;"><p class="p_TextIndentedL2"><img src="d_forkjoinup.png" width="85" height="82" border="0" alt="d_ForkJoinUp"></p>
</td>
</tr>
</table>
</div>
<p class="p_BodyText"><span class="f_BodyText">The </span><span class="f_BodyText" style="font-style: italic;">Fork/Join</span><span class="f_BodyText"> elements have different modes of use, as follows:</span></p>
<ul style="text-indent: 0px; margin-left: 30px; list-style-position: outside;">
<li><span class="f_Bulletlist1">To fork or split the flow into a number of concurrent flows.</span></li>
<li><span class="f_Bulletlist1">To join the flow of a number of concurrent flows.</span></li>
<li><span class="f_Bulletlist1">To both join and fork a number of incoming flows to a number of outgoing flows.</span></li>
</ul>
<p class="p_BodyText"><span class="f_BodyText">These elements are used in both <a href="activitydiagram.htm">Activity</a> and <a href="statediagram.htm">State Machine</a> diagrams. With respect to State Machine diagrams, <a href="fork.htm">Forks</a> and <a href="join.htm">Joins</a> are used as <a href="pseudo_states.htm">pseudo-states</a>. Other pseudo-states include <a href="historystate.htm">history states</a>, <a href="entrypoints.htm">entry points</a> and <a href="exitpoints.htm">exit points</a>. Forks are used to split an incoming transition into concurrent multiple transitions leading to different target states. Joins are used to merge concurrent multiple transitions into a single transition leading to a single target. They are semantic inverses. To learn more about these individual elements see their specific topics.</span></p>
<p class="p_BodyText"><span class="f_BodyText">Some examples of Fork/Join nodes include:</span></p>
<p class="p_OMGText"><span class="f_OMGText" style="font-style: normal; font-weight: bold;">Fork or split the flow into a number of concurrent flows:</span></p>
<p class="p_TextIndentedL2"><img src="activity%20-%20forkjoin2.png" width="367" height="118" border="0" alt="Activity - ForkJoin2"></p>
<p class="p_BodyText"><span class="f_BodyText">See</span><span class="f_BodyText" style="font-style: italic;"> UML Superstructure Specification, v2.1.1, figure 12.95 p. 377</span><span class="f_BodyText">.</span></p>
<p class="p_OMGText"><span class="f_OMGText" style="font-style: normal; font-weight: bold;">Join the flow of a number of concurrent flows:</span></p>
<p class="p_TextIndentedL2"><img src="activity%20-%20forkjoin1.png" width="395" height="147" border="0" alt="Activity - ForkJoin1"></p>
<p class="p_BodyText"><span class="f_BodyText">See </span><span class="f_BodyText" style="font-style: italic;">UML Superstructure Specification, v2.1.1, figure 12.103, p. 384</span><span class="f_BodyText">.</span></p>
<p class="p_OMGText"><span class="f_OMGText" style="font-style: normal; font-weight: bold;">Join and Fork a number of incoming flows to a number of outgoing flows:</span></p>
<p class="p_TextIndentedL2"><img src="activity%20-%20forkjoin3.png" width="378" height="131" border="0" alt="Activity - ForkJoin3"></p>
<p class="p_SubHeadingL1"><span class="f_SubHeadingL1">Toolbox Icon</span></p>
<p class="p_TextIndentedL2"><img src="c_forkjoinacross.png" width="170" height="20" border="0" alt="c_ForkJoinAcross"><span class="f_TextIndentedL2"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img src="c_forkjoinup.png" width="170" height="24" border="0" alt="c_ForkJoinUp"></span></p>
<p class="p_SubHeadingL1"><span class="f_SubHeadingL1">OMG UML Specification</span></p>
<p class="p_BodyText"><span class="f_BodyText" style="font-weight: bold;">Fork</span><br>
<span class="f_BodyText">The OMG UML specification (</span><span class="f_BodyText" style="font-style: italic;">UML Superstructure Specification, v2.1.1, p. 376</span><span class="f_BodyText">) states:</span></p>
<p class="p_OMGText"><span class="f_OMGText">A fork node is a control node that splits a flow into multiple concurrent flows... A fork node has one incoming edge and multiple outgoing edges.</span></p>
<p class="p_BodyText"><span class="f_BodyText" style="font-weight: bold;">Join</span><br>
<span class="f_BodyText">The OMG UML specification (</span><span class="f_BodyText" style="font-style: italic;">UML Superstructure Specification, v2.1.1, p. 381-382</span><span class="f_BodyText">) states:</span></p>
<p class="p_OMGText"><span class="f_OMGText">A join node is a control node that synchronizes multiple flows... A join node has multiple incoming edges and one outgoing edge.</span></p>




            </div>
          </div>
        </div>



</div>


</body>
</html>
